package com.zg.autoform.web.req;

import com.zg.autoform.dto.ImportFieldConfig;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 保存导入模板请求
 * @author zg
 */
@Data
@ApiModel(value = "保存导入模板请求", description = "保存导入模板请求")
public class SaveImportTemplateReq {

    /**
     * 模板ID（更新时传入）
     */
    @ApiModelProperty(value = "模板ID")
    private Long id;

    /**
     * 模板名称
     */
    @ApiModelProperty(value = "模板名称", required = true)
    @NotBlank(message = "模板名称不能为空")
    private String name;

    /**
     * 表单ID
     */
    @ApiModelProperty(value = "表单ID", required = true)
    @NotNull(message = "表单ID不能为空")
    private Long formId;

    /**
     * 模板描述
     */
    @ApiModelProperty(value = "模板描述")
    private String description;

    /**
     * 是否启用
     */
    @ApiModelProperty(value = "是否启用")
    private Boolean enabled = true;

    /**
     * 字段配置列表
     */
    @ApiModelProperty(value = "字段配置列表", required = true)
    @NotEmpty(message = "字段配置不能为空")
    private List<ImportFieldConfig> fields;

    /**
     * 最大导入行数
     */
    @ApiModelProperty(value = "最大导入行数")
    private Integer maxRows = 10000;

    /**
     * 重复数据检查字段
     */
    @ApiModelProperty(value = "重复数据检查字段")
    private String duplicateCheckFields;

    /**
     * 重复数据处理策略
     */
    @ApiModelProperty(value = "重复数据处理策略：ALLOW-允许重复，SKIP-跳过，OVERWRITE-覆盖，ERROR-报错")
    private String duplicateHandleStrategy = "ALLOW";
}
